admin-switch: Don't segfault if there's no remote
authorAnton Gerasimov <anton@advancedtelematic.com>
Mon, 13 Feb 2017 16:34:18 +0000 (17:34 +0100)
committerAtomic Bot <atomic-devel@projectatomic.io>
Mon, 13 Feb 2017 20:32:07 +0000 (20:32 +0000)
Switching between local branches should be supported too.

Signed-off-by: Anton Gerasimov <anton@advancedtelematic.com>
Closes: #683
Approved by: cgwalters

src/ostree/ot-admin-builtin-switch.c

index 877cbe96ba72001adead9e19a7b96a9ce2bf0d22..d72aeebd254ed17e80103779ae050960a38d1179 100644 (file)
@@ -53,6 +53,7 @@ ot_admin_builtin_switch (int argc, char **argv, GCancellable *cancellable, GErro
   g_autofree char *new_remote = NULL;
   g_autofree char *new_ref = NULL;
   g_autofree char *new_refspec = NULL;
+  const char* remote;
   glnx_unref_object OstreeSysrootUpgrader *upgrader = NULL;
   glnx_unref_object OstreeAsyncProgress *progress = NULL;
   gboolean changed;
@@ -101,12 +102,17 @@ ot_admin_builtin_switch (int argc, char **argv, GCancellable *cancellable, GErro
       if (!ostree_parse_refspec (new_provided_refspec, &new_remote, &new_ref, error))
         goto out;
     }
-  
+
   if (!new_remote)
-    new_refspec = g_strconcat (origin_remote, ":", new_ref, NULL);
+    remote = origin_remote;
   else
-    new_refspec = g_strconcat (new_remote, ":", new_ref, NULL);
-  
+    remote = new_remote;
+
+  if (remote)
+    new_refspec = g_strconcat (remote, ":", new_ref, NULL);
+  else
+    new_refspec = g_strdup (new_ref);
+
   if (strcmp (origin_refspec, new_refspec) == 0)
     {
       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,